package server;
/**
 * 
 * @author c.vidaillac
 *
 */
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.SQLException;
import java.util.ArrayList;

import bdd.dao.PaiementTable;
import bdd.dao.ProduitTable;
import bdd.dao.UtilisateurTable;
import bdd.metier.Paiement;
import bdd.metier.Produit;
import bdd.metier.Utilisateur;

import client.StarCafeRMI;

public class ServerSCafeImpl extends UnicastRemoteObject implements StarCafeRMI {

	private static final long serialVersionUID = 1L;
	

	protected ServerSCafeImpl(String s) throws RemoteException {
		super();
	}

	@Override
	public ArrayList<Paiement> affichagePaiements()	throws RemoteException {
		PaiementTable pmntTable = new PaiementTable();
		ArrayList<Paiement> rslt = new ArrayList<Paiement>();
		try {
			rslt = pmntTable.getAllPaiements();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return rslt;
	}

	@Override
	public ArrayList<Produit> affichageProduits() throws RemoteException {
		ProduitTable pmntTable = new ProduitTable();
		ArrayList<Produit> rslt = new ArrayList<Produit>();
		try {
			rslt = pmntTable.getAllProduits();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return rslt;
	}

	@Override
	public ArrayList<Utilisateur> affichageUtilisateurs() throws RemoteException {
		UtilisateurTable usrTab = new UtilisateurTable();
		ArrayList<Utilisateur> list = new ArrayList<Utilisateur>();
		try {
			list = usrTab.getAllUtilisateurs();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return list;
	}

	@Override
	public ArrayList<Paiement> affichagePaiement(String client) throws RemoteException{
		ArrayList<Paiement> list = new ArrayList<Paiement>();
		PaiementTable tab = new PaiementTable();
		try {
			list = tab.getAllPaiements();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return list;
	}

	@Override
	public void connexionBDD() throws RemoteException {
		GestionnaireConnection.logon();
	}

	@Override
	public int getUsrPassword(String name) throws RemoteException {
		int pass = 0;
		UtilisateurTable usrTab = new UtilisateurTable();
		try {
			pass = usrTab.getPassWord(name);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return pass;
	}

	@Override
	public int getStatut(String name) throws RemoteException {
		int statut = 0;
		UtilisateurTable usrTab = new UtilisateurTable();
		try {
			statut = usrTab.getStatut(name);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return statut;
	}

	@Override
	public boolean isExistingUsr(String name) throws RemoteException {
		boolean usr = false;
		UtilisateurTable usrTab = new UtilisateurTable();
		try {
			if (usr = usrTab.getOneUtilisateur(name) != null)
				usr = true;
			else
				usr = false;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return usr;
	}

	@Override
	public void setUsrConnection(boolean connection, String name)
			throws RemoteException {
		UtilisateurTable usrTab = new UtilisateurTable();
		Utilisateur usr = null;
		try {
			usrTab.setConnexion(name, connection);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	@Override
	public String getUsrName(Utilisateur utilisateur) throws RemoteException {
		Utilisateur usr = utilisateur;;
		return usr.getNom();
	}

	@Override
	public ArrayList<Paiement> getPaiementFromUsr(String nom)
			throws RemoteException {
		PaiementTable paiTab = new PaiementTable();
		ArrayList<Paiement> list = null;
		try {
			list = paiTab.getPaiementsFromUsr(nom);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return list;
	}

	@Override
	public ArrayList<Produit> getProduitFromPaiement(String idPaiement)
			throws RemoteException {
		ProduitTable prodTab = new ProduitTable();
		ArrayList<Produit> prod = null;
		try {
			prod = prodTab.getProduitsFromPaiement(idPaiement);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return prod;
	}

	@Override
	public String listProdToString(ArrayList<Produit> list)
			throws RemoteException {
		StringBuffer prod = new StringBuffer();
		for (int i=0; i< list.size(); i++){
			
			prod.append(list.get(i).getNom()+ " x " + String.valueOf(list.get(i).getQuantite())+ " ");
		}
		return prod.toString();
	}

}
